Implementing a circuit design within an integrated circuit (IC) entails processing the circuit design through a design flow. The design flow includes multiple, different phases. These phases generally include synthesis, placement, and routing. In general, synthesis refers to the process of generating a gate-level netlist from a high-level description of a circuit or system. Placement refers to the process of assigning elements of the synthesized circuit design to particular instances of circuit blocks and/or resources having specific locations on the target IC. Routing refers to the process of selecting or implementing particular routing resources, e.g., wires and/or other interconnect circuitry, to electrically couple the various circuit blocks of the target IC after placement.
Throughout the design cycle, designers make incremental changes to the circuit design. After each such change, the circuit design may be re-processed through one or more or all of the phases of the design flow to determine the effects of the change on the performance of the circuit design. For example, synthesis is performed to obtain a synthesized version of the modified circuit design. The synthesized circuit design may then be placed and/or routed. Despite the prior version of the circuit design having been synthesized, available electronic design automation tools typically expend significant amounts of runtime synthesizing the modified version of the circuit design. Further, the results obtained are often unpredictable relative to prior synthesis results.